Most software delivered by a software vendor typically meets the needs of a customer. Some customers have their own requirements, which are unique to their business. Hence, software delivered by a vendor may be customized, to fit a customer's specific needs. However, customization of a vendor's software acts as a barrier to upgrading, applying patches or maintaining software by the vendor. This is because a bug fix or patch provided by the vendor is typically based on an initial version which the vendor supplied to the customer, not accounting for any customization of the vendor-supplied software at a customer's premises. If a customer applies a patch or fix from the vendor, one or more customizations of the initial version which are made by the customer may get over-written by a new version from the vendor. This makes applying patches or fixes or even upgrading to a latest version difficult for customers.
When customized software is to be upgraded by a fix supplied by a vendor, manual effort is required at the customer's premises, to maintain previously applied customization(s). Specifically, during the upgrade process, a customer needs to manually review and identify all vendor-supplied modules where any customization has been applied. Then, the customer has to make a copy of any custom code they added to the vendor-supplied modules, and then apply the fix or patch delivered by the vendor. After the fix or patch is applied, the customer must use the custom code copy to re-apply their customizations to new versions of the vendor-supplied modules.
Due to the time and cost involved in the upgrade process, many customers refrain from upgrading an initial version of vendor-supplied modules, by not applying patches, fixes, maintenance packages, upgrade codes etc. This traps the customer into staying with an old version of the vendor-supplied software, losing benefits of new features and enhancements, even though a latest and powerful version is available in the market. The inventors of the current patent application believe that there is a need for apparatuses, methods and non-transitory computer-readable storage media of the type described below, to improve the process of applying customizations to vendor-supplied software, as described below.